package com.uade.empresasdistribuidas.entities;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Inheritance(strategy=InheritanceType.JOINED)
@Table(name= "Envios") 
public abstract class EnvioDTO {
	
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="nroEnvio" ,unique = true, nullable = false)
	private Long nroEnvio;
	
	@Column(name="fechaMaximaLlegada", nullable=false)
	private Date fechaMaximaLlegada;
	
	@Column(name="fechaPartida")
	private Date fechaPartida;
	
	@Column(name="fechaLlegada")
	private Date fechaLlegada;
	
	@OneToMany(mappedBy = "envio", fetch=FetchType.EAGER) 
	private List<PedidoDTO> pedidos;
	
	@Column(name="estado")
	private String estado;

	public Long getNroEnvio() {
		return nroEnvio;
	}

	public void setNroEnvio(Long nroEnvio) {
		this.nroEnvio = nroEnvio;
	}

	public Date getFechaMaximaLlegada() {
		return fechaMaximaLlegada;
	}

	public void setFechaMaximaLlegada(Date fechaMaximaLlegada) {
		this.fechaMaximaLlegada = fechaMaximaLlegada;
	}

	public Date getFechaPartida() {
		return fechaPartida;
	}

	public void setFechaPartida(Date fechaPartida) {
		this.fechaPartida = fechaPartida;
	}

	public Date getFechaLlegada() {
		return fechaLlegada;
	}

	public void setFechaLlegada(Date fechaLlegada) {
		this.fechaLlegada = fechaLlegada;
	}

	public List<PedidoDTO> getPedidos() {
		return pedidos;
	}

	public void setPedidos(List<PedidoDTO> pedidos) {
		this.pedidos = pedidos;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public Float getCostoEnvio() {
		
		return 0f;
	}
	
	
	public void addPedido(PedidoDTO pedido) {
		if (pedidos == null) {
			pedidos = new ArrayList<PedidoDTO>();
		}
		pedidos.add(pedido);
	}
}
